iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
AI/ ML & Data

從投信數據預測葛蘭碧突破後股價走勢系列 第 16

[Day 16] 資料收集與準備 - 特徵選擇(1)

  • 分享至 

  • xImage
  •  

前言

在建置這個模型的過程中,挑選和計算關鍵特徵很重要。這些特徵不只可以幫助我們的模型更懂市場趨勢,還能掌握投信的進出動作,讓我們在預測股價走勢時更有把握。本篇我想來聊一下我們手上已經有的數據,以及接下來要怎麼利用這些數據來計算出一些進階特徵。

現階段我們有的數據

我們擁有台灣股市從2020年1月2日至2024年9月27日期間的每日交易數據,涵蓋所有具有投信買賣紀錄的股票。這些數據其實已經可以幫我們做一些基本的技術分析,接下來還可以用來算出更進階的特徵。

現在有的欄位大概如下:

  • 交易日期 (date):每筆交易的日期
  • 股票代號 (stock_id):每支股票的代號
  • 每日成交量 (Trading_Volume):當天的總成交量
  • 開盤價 (open):當天的開盤價格
  • 最高價 (max):當天的最高價格
  • 最低價 (min):當天的最低價格
  • 收盤價 (close):當天的收盤價格
  • 投信每日買賣超淨額 (Buy_Sell_Net):投信當天的買進減去賣出的淨額

有了這些欄位之後,我們就可以進一步來算一些更有用的進階特徵。

如何利用這些數據來算進階特徵

為了讓LSTM模型能更精準地預測未來股價,我們可以利用現有的數據來計算以下幾個進階特徵。這些特徵可以幫我們更好地理解市場趨勢,並分析投信的行為。

  1. 投信介入力道

    • 每日買賣超淨額佔總成交量比例
      這個特徵可以幫我們了解投信對這支股票的影響力。程式大概這樣寫:

      投信介入力道 = Buy_Sell_Net / Trading_Volume
      

      比例越大,表示投信對這支股票的「力道」越強。

    • 累積買賣超淨額
      我們可以累積投信過去幾天的買賣超淨額,這樣可以看到他們是否持續佈局這支股票。這個特徵不僅能幫助我們看到投信的長期佈局,還能偵測到投信的「突然介入」。當某天的買賣超淨額突然大增,累積數值會在短期內跳升,這可能是投信大幅進場的跡象。

      計算方式大概這樣:

      累積買賣超淨額_5天 = Buy_Sell_Net.rolling(window=5).sum()
      

      假設要偵測到投信突然大幅介入,你可以這樣設定條件:

      if 累積買賣超淨額_5天 - 累積買賣超淨額_5天.shift(1) > 某個閾值:
          print("投信突然介入")
      

      當累積買賣超淨額在短時間內大幅上升時,我們就可以捕捉到投信的突擊佈局。

  2. 葛蘭必突破
    葛蘭必突破中很重要的是移動平均線(MA),用來觀察價格的趨勢,之前我們有寫過一篇專門在講葛蘭必突破的計算方法,可以參考這裡。這邊我再將長中短均線的計算方式列出來:

    • 短期MA (MA30)
      短期MA能幫助我們看短期內價格的波動。假設要計算MA30,程式是這樣:

      MA5 = close.rolling(window=30).mean()
      
    • 中期MA (MA100)
      MA100用來判斷中期的趨勢,常常用來看股價變動的方向,程式大概這樣:

      MA50 = close.rolling(window=100).mean()
      
    • 長期MA (MA200)
      MA200則是用來看長期趨勢,幫助我們判斷市場的整體走向:

      MA200 = close.rolling(window=200).mean()
      
  3. RSI (相對強弱指數)
    RSI可以幫我們判斷這支股票是「超買」還是「超賣」。RSI值通常在0到100之間,計算方式稍微複雜一點,但程式如下:

    delta = close.diff()
    gain = (delta.where(delta > 0, 0)).rolling(window=14).mean()
    loss = (-delta.where(delta < 0, 0)).rolling(window=14).mean()
    RS = gain / loss
    RSI = 100 - (100 / (1 + RS))
    

    當RSI超過70時,表示股票可能超買,價格可能會回調;如果低於30,則可能是超賣,價格有機會反彈。

  4. 帶寬指標值(Bandwidth Indicator)
    帶寬指標值用來衡量布林通道的波動範圍,並且將這個範圍標準化,使其相對於中線(通常是20天移動平均線)。這樣可以幫助我們更好地比較不同時期或不同股票的波動性。計算方式如下:

    帶寬指標值 = (上軌 - 下軌) / MA20
    

上一篇
[Day 15] 資料收集與準備 - 資料前處理(2)
下一篇
[Day 17]資料收集與準備 - 特徵選擇(2)
系列文
從投信數據預測葛蘭碧突破後股價走勢17
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言